Summary of File Objects
C Summary
Constants
typedef enum TQ3FileModeMasks { kQ3FileModeNormal = 0, kQ3FileModeStream = 1 << 0, kQ3FileModeDatabase = 1 << 1, kQ3FileModeText = 1 << 2 } TQ3FileModeMasks; #define kQ3OldVersion Q3FileVersion(0,2) #define kQ3CurrentVersion Q3FileVersion(0,5) #define kQ3StringMaximumLength 1024Unknown Object Types
#define kQ3UnknownTypeBinary Q3_OBJECT_TYPE('u','k','b','n') #define kQ3UnknownTypeText Q3_OBJECT_TYPE('u','k','t','x')Data Types
Basic Types
typedef unsigned long TQ3FileVersion; typedef unsigned long TQ3FileMode; typedef unsigned char TQ3Uns8; /*1-byte unsigned integer*/ typedef signed char TQ3Int8; /*1-byte signed integer*/ typedef unsigned short TQ3Uns16; /*2-byte unsigned integer*/ typedef signed short TQ3Int16; /*2-byte signed integer*/ typedef unsigned long TQ3Uns32; /*4-byte unsigned integer*/ typedef signed long TQ3Int32; /*4-byte signed integer*/ typedef struct TQ3Uns64 { unsigned long hi; unsigned long lo; } TQ3Uns64; /*8-byte unsigned integer*/ typedef struct TQ3Int64 { signed long hi; unsigned long lo; } TQ3Uns64; /*8-byte signed integer*/ typedef float TQ3Float32; /*4-byte floating-pt number*/ typedef double TQ3Float64; /*8-byte floating-pt number*/ typedef TQ3Uns32 TQ3Size;Unknown Object Data Types
typedef struct TQ3UnknownTextData { char *objectName; /*'\0' terminated*/ char *contents; /*'\0' terminated*/ } TQ3UnknownTextData; typedef struct TQ3UnknownBinaryData { TQ3ObjectType objectType; unsigned long size; TQ3Endian byteOrder; char *contents; } TQ3UnknownBinaryData;File Objects Routines
Creating File Objects
TQ3FileObject Q3File_New(void);Attaching File Objects to Storage Objects
TQ3Status Q3File_GetStorage(TQ3FileObject file, TQ3StorageObject *storage); TQ3Status Q3File_SetStorage(TQ3FileObject file, TQ3StorageObject storage);Accessing File Objects
TQ3Status Q3File_OpenRead(TQ3FileObject file, TQ3FileMode *mode); TQ3Status Q3File_OpenWrite(TQ3FileObject file, TQ3FileMode mode); TQ3Status Q3File_IsOpen(TQ3FileObject file, TQ3Boolean *isOpen); TQ3Status Q3File_Close(TQ3FileObject file); TQ3Status Q3File_Cancel(TQ3FileObject file); TQ3Status Q3File_GetMode(TQ3FileObject file, TQ3FileMode *fileMode); TQ3Status Q3File_GetVersion(TQ3FileObject file, TQ3FileVersion *version);Accessing Objects Directly
TQ3ObjectType Q3File_GetNextObjectType ( TQ3FileObject file); TQ3Boolean Q3File_IsNextObjectOfType ( TQ3FileObject file, TQ3ObjectType ofType); TQ3Object Q3File_ReadObject(TQ3FileObject file); TQ3Status Q3File_SkipObject(TQ3FileObject file); TQ3Boolean Q3File_IsEndOfFile(TQ3FileObject file);Setting Idle Methods
TQ3Status Q3File_SetIdleMethod(TQ3FileObject file, TQ3FileIdleMethod idle, const void *idleData);Reading and Writing File Subobjects
TQ3Boolean Q3File_IsEndOfData(TQ3FileObject file); TQ3Boolean Q3File_IsEndOfContainer ( TQ3FileObject file, TQ3Object rootObject);Reading and Writing File Data
TQ3Status Q3Uns8_Read(TQ3Uns8 *data, TQ3FileObject file); TQ3Status Q3Uns8_Write(const TQ3Uns8 data, TQ3FileObject file); TQ3Status Q3Uns16_Read(TQ3Uns16 *data, TQ3FileObject file); TQ3Status Q3Uns16_Write(const TQ3Uns16 data, TQ3FileObject file); TQ3Status Q3Uns32_Read(TQ3Uns32 *data, TQ3FileObject file); TQ3Status Q3Uns32_Write(const TQ3Uns32 data, TQ3FileObject file); TQ3Status Q3Int32_Read(TQ3Int32 *data, TQ3FileObject file); TQ3Status Q3Int32_Write(const TQ3Int32 data, TQ3FileObject file); TQ3Status Q3Uns64_Read(TQ3Uns64 *data, TQ3FileObject file); TQ3Status Q3Uns64_Write(const TQ3Uns64 data, TQ3FileObject file); TQ3Status Q3Float32_Read(TQ3Float32 *data, TQ3FileObject file); TQ3Status Q3Float32_Write(const TQ3Float32 data, TQ3FileObject file); TQ3Status Q3Float64_Read(TQ3Float64 *data, TQ3FileObject file); TQ3Status Q3Float64_Write(const TQ3Float64 data, TQ3FileObject file); TQ3Size Q3Size_Pad(TQ3Size size); TQ3Status Q3String_Read(char *data, unsigned long *length, TQ3FileObject file); TQ3Status Q3String_Write(const char *data, TQ3FileObject file); TQ3Status Q3RawData_Read(unsigned char *data, unsigned long size, TQ3FileObject file); TQ3Status Q3RawData_Write(const unsigned char *data, unsigned long size, TQ3FileObject file); TQ3Status Q3Point2D_Read(TQ3Point2D *point2D, TQ3FileObject file); TQ3Status Q3Point2D_Write(const TQ3Point2D *point2D, TQ3FileObject file); TQ3Status Q3Point3D_Read(TQ3Point3D *point3D, TQ3FileObject file); TQ3Status Q3Point3D_Write(const TQ3Point3D *point3D, TQ3FileObject file); TQ3Status Q3RationalPoint3D_Read ( TQ3RationalPoint3D *point3D, TQ3FileObject file); TQ3Status Q3RationalPoint3D_Write ( const TQ3RationalPoint3D *point3D, TQ3FileObject file); TQ3Status Q3RationalPoint4D_Read ( TQ3RationalPoint4D *point4D, TQ3FileObject file); TQ3Status Q3RationalPoint4D_Write ( const TQ3RationalPoint4D *point4D, TQ3FileObject file); TQ3Status Q3Vector2D_Read(TQ3Vector2D *vector2D, TQ3FileObject file); TQ3Status Q3Vector2D_Write(const TQ3Vector2D *vector2D, TQ3FileObject file); TQ3Status Q3Vector3D_Read(TQ3Vector3D *vector3D, TQ3FileObject file); TQ3Status Q3Vector3D_Write(const TQ3Vector3D *vector3D, TQ3FileObject file); TQ3Status Q3Matrix4x4_Read(TQ3Matrix4x4 *matrix4x4, TQ3FileObject file); TQ3Status Q3Matrix4x4_Write(const TQ3Matrix4x4 *matrix4x4, TQ3FileObject file); TQ3Status Q3Tangent2D_Read(TQ3Tangent2D *tangent2D, TQ3FileObject file); TQ3Status Q3Tangent2D_Write(const TQ3Tangent2D *tangent2D, TQ3FileObject file); TQ3Status Q3Tangent3D_Read(TQ3Tangent3D *tangent3D, TQ3FileObject file); TQ3Status Q3Tangent3D_Write(const TQ3Tangent3D *tangent3D, TQ3FileObject file); TQ3Status Q3Comment_Write(char *comment, TQ3FileObject file);Managing Unknown Objects
TQ3ObjectType Q3Unknown_GetType ( TQ3UnknownObject unknownObject); TQ3Status Q3Unknown_GetDirtyState ( TQ3UnknownObject unknownObject, TQ3Boolean *isDirty); TQ3Status Q3Unknown_SetDirtyState ( TQ3UnknownObject unknownObject, TQ3Boolean isDirty); TQ3Status Q3UnknownText_GetData ( TQ3UnknownObject unknownObject, TQ3UnknownTextData *unknownTextData); TQ3Status Q3UnknownText_EmptyData ( TQ3UnknownTextData *unknownTextData); TQ3Status Q3UnknownBinary_GetData ( TQ3UnknownObject unknownObject, TQ3UnknownBinaryData *unknownBinaryData); TQ3Status Q3UnknownBinary_EmptyData ( TQ3UnknownBinaryData *unknownBinaryData);Managing View Hints Objects
TQ3ViewHintsObject Q3ViewHints_New ( TQ3ViewObject view); TQ3Status Q3ViewHints_GetRenderer ( TQ3ViewHintsObject viewHints, TQ3RendererObject *renderer); TQ3Status Q3ViewHints_SetRenderer ( TQ3ViewHintsObject viewHints, TQ3RendererObject renderer); TQ3Status Q3ViewHints_GetCamera ( TQ3ViewHintsObject viewHints, TQ3CameraObject *camera); TQ3Status Q3ViewHints_SetCamera ( TQ3ViewHintsObject viewHints, TQ3CameraObject camera); TQ3Status Q3ViewHints_GetLightGroup ( TQ3ViewHintsObject viewHints, TQ3GroupObject *lightGroup); TQ3Status Q3ViewHints_SetLightGroup ( TQ3ViewHintsObject viewHints, TQ3GroupObject lightGroup); TQ3Status Q3ViewHints_GetAttributeSet ( TQ3ViewHintsObject viewHints, TQ3AttributeSet *attributeSet); TQ3Status Q3ViewHints_SetAttributeSet ( TQ3ViewHintsObject viewHints, TQ3AttributeSet attributeSet); TQ3Status Q3ViewHints_GetDimensionsState ( TQ3ViewHintsObject viewHints, TQ3Boolean *isValid); TQ3Status Q3ViewHints_SetDimensionsState ( TQ3ViewHintsObject viewHints, TQ3Boolean isValid); TQ3Status Q3ViewHints_GetDimensions ( TQ3ViewHintsObject viewHints, unsigned long *width, unsigned long *height); TQ3Status Q3ViewHints_SetDimensions ( TQ3ViewHintsObject viewHints, unsigned long width, unsigned long height); TQ3Status Q3ViewHints_GetMaskState ( TQ3ViewHintsObject viewHints, TQ3Boolean *isValid); TQ3Status Q3ViewHints_SetMaskState ( TQ3ViewHintsObject viewHints, TQ3Boolean isValid); TQ3Status Q3ViewHints_GetMask(TQ3ViewHintsObject viewHints, TQ3Bitmap *mask); TQ3Status Q3ViewHints_SetMask(TQ3ViewHintsObject viewHints, const TQ3Bitmap *mask); TQ3Status Q3ViewHints_GetClearImageMethod ( TQ3ViewHintsObject viewHints, TQ3DrawContextClearImageMethod *clearMethod); TQ3Status Q3ViewHints_SetClearImageMethod ( TQ3ViewHintsObject viewHints, TQ3DrawContextClearImageMethod clearMethod); TQ3Status Q3ViewHints_GetClearImageColor ( TQ3ViewHintsObject viewHints, TQ3ColorARGB *color); TQ3Status Q3ViewHints_SetClearImageColor ( TQ3ViewHintsObject viewHints, const TQ3ColorARGB *color);Version Macros
#define Q3FileVersion(majorVersion, minorVersion) \ (TQ3FileVersion) ((((TQ3Uns32) majorVersion & 0xFFFF) << 16) | \ ((TQ3Uns32) minorVersion & 0xFFFF))Application-Defined Routines
typedef TQ3Status (*TQ3ObjectReadDataMethod) ( TQ3Object parentObject, TQ3FileObject file); typedef TQ3Status (*TQ3ObjectTraverseMethod) ( TQ3Object object, TQ3FileObject file); typedef TQ3Status (*TQ3ObjectWriteMethod) ( const void *object, TQ3FileObject file); typedef TQ3Status (*TQ3FileIdleMethod) ( TQ3FileObject file, const void *idlerData);Errors, Warnings, and Notices
kQ3ErrorNoStorageSetForFile kQ3ErrorEndOfFile kQ3ErrorFileCancelled kQ3ErrorInvalidMetafile kQ3ErrorInvalidMetafilePrimitive kQ3ErrorInvalidMetafileLabel kQ3ErrorInvalidMetafileObject kQ3ErrorInvalidMetafileSubObject kQ3ErrorInvalidSubObjectForObject kQ3ErrorUnresolvableReference kQ3ErrorUnknownObject kQ3ErrorFileAlreadyOpen kQ3ErrorFileNotOpen kQ3ErrorFileIsOpen kQ3ErrorBeginWriteAlreadyCalled kQ3ErrorBeginWriteNotCalled kQ3ErrorEndWriteNotCalled kQ3ErrorReadStateInactive kQ3ErrorStateUnavailable kQ3ErrorWriteStateInactive kQ3ErrorSizeNotLongAligned kQ3ErrorFileModeRestriction kQ3ErrorInvalidHexString kQ3ErrorWroteMoreThanSize kQ3ErrorWroteLessThanSize kQ3ErrorReadLessThanSize kQ3ErrorReadMoreThanSize kQ3ErrorSizeMismatch kQ3ErrorStringExceedsMaximumLength kQ3ErrorNonUniqueLabel kQ3ErrorUnmatchedEndGroup kQ3WarningFilePointerResolutionFailed kQ3WarningStringExceedsMaximumLength kQ3NoticeFileAliasWasChanged